﻿using UnityEngine;

namespace Gp.Scripts.Core.Animation {
    /// 用于修正单位的攻击序列。如果在AnimationClip中没有设置HitTrigger触发，上层系统会一直处于阻塞状态。
    /// 该脚本的作用是保证在发生了上方情况时，HitTrigger也之上能触发一次。
    public class UnitAttackFix : StateMachineBehaviour {
        public override void OnStateExit(Animator animator, AnimatorStateInfo info, int layer) {
            // 在状态退出时，手动触发命中事件。
            if (!animator.TryGetComponent<UnitModel>(out var model)) return;
            model.TriggerAnimationEvent(UnitAnimEventType.AttackHitEvent.EventName());
            if (model is not HumanoidModel {weaponPivot : {CurWeapon: { } weapon}}) return;
            // 在状态退出时，确保拖尾关闭
            weapon.DeactivateTrail();
        }
    }
}